package com.googlecode.recycled.xml;

import com.google.common.collect.Lists;
import org.xml.sax.ErrorHandler;
import org.xml.sax.SAXException;
import org.xml.sax.SAXParseException;

import java.util.List;

public class ObserverProxyErrorHandler implements ErrorHandler {

    protected List<ErrorHandler> errorHandlers = Lists.newLinkedList();

    public ObserverProxyErrorHandler() {
    }

    public ObserverProxyErrorHandler(List<ErrorHandler> errorHandlers) {
        this.errorHandlers = errorHandlers;
    }

    @Override
    public void warning(SAXParseException e) throws SAXException {
        for (ErrorHandler errorHandler : errorHandlers) {
            errorHandler.warning(e);
        }
    }

    @Override
    public void error(SAXParseException e) throws SAXException {
        for (ErrorHandler errorHandler : errorHandlers) {
            errorHandler.error(e);
        }
    }

    @Override
    public void fatalError(SAXParseException e) throws SAXException {
        for (ErrorHandler errorHandler : errorHandlers) {
            errorHandler.fatalError(e);
        }
    }

    public void setErrorHandlers(List<ErrorHandler> errorHandlers) {
        this.errorHandlers = errorHandlers;
    }

    public void addErrorHandler(ErrorHandler errorHandler) {
        this.errorHandlers.add(errorHandler);
    }

    public void removeErrorHandler(ErrorHandler errorHandler) {
        this.errorHandlers.remove(errorHandler);
    }

}
